package com.wanmait.happyheating.controller;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo;
import com.wanmait.happyheating.pojo.Admin;
import com.wanmait.happyheating.service.AdminService;
import com.wanmait.happyheating.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import java.util.Date;

/**
 * @author zhangxiaofeng
 */
@RestController
@RequestMapping("/manage")
public class AdminCommonController
{
    @Autowired
    private AdminService adminService;

    @IgnoreToken
    @RequestMapping("login")
    public  Result login(@RequestBody Admin admin)
    {
        //获取IP地址
//        String ip= AdminIPUtils.getIpAddr(request);
//        Date date=new Date();
        //将admin的name属性和pass属性作为参数传递到service，方法返回一个admin对象
        LambdaQueryWrapper<Admin> adminLambdaQueryWrapper=new LambdaQueryWrapper<>();
        adminLambdaQueryWrapper.eq(Admin::getName,admin.getName());
        adminLambdaQueryWrapper.eq(Admin::getPass,admin.getPass());
        Admin adminLogin=  adminService.getOne(adminLambdaQueryWrapper);
        //判断对象是否为空，返回不同的状态代码和消息
        //在前端根据消息内容显示：
        // 1.登陆失败不跳转网页，提示用户名或密码错误；
        // 2.登陆成功跳转到管理员首页，在前端可以在调用这个controller的axios的方法中then部分重定向到管理员首页
        if(adminLogin!=null){
            String token = AdminJWTUtils.createToken(adminLogin);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("token",token);
            return Result.success("登录成功",jsonObject);
        }
        else{
            return Result.success("用户不存在");
        }



    }

    /**
     * 分页查询所有管理员，按照姓名以及录入时间查询都是使用此方法
     * @author 王梓旭
     * @date 2021-5-31
     */
    @RequestMapping("admin/findAllByPage")
    public Result findAllByPage(@RequestBody Admin admin, Date date, Integer pageNum, Integer pageSize){
        PageInfo<Admin> pageInfo = adminService.findAllByPage(admin,date,pageNum,pageSize);
        return Result.success(pageInfo);
    }

}